Page({
  data: {
    selectedStep: '0.6', // 默认选中0.6m/步
    userSteps: 0, // 用户累计步数
    todaySteps: 0, // 今日步数
    weeklyDistance: 0, // 一周行走距离(公里)
    longMarchDistance: 4150, // 林基路之路总里程(公里)
    calculateResult: null, // 计算结果
    showResultModal: false, // 是否显示结果弹框
    showStepModal: false, // 是否显示步长选择弹窗
    stepOptions: [
      { value: '0.5', label: '0.5m/步', desc: '较小步幅' },
      { value: '0.6', label: '0.6m/步', desc: '标准步幅' },
      { value: '0.7', label: '0.7m/步', desc: '较大步幅' },
      { value: '0.8', label: '0.8m/步', desc: '大步幅' },
      { value: 'custom', label: '自定义', desc: '输入您的步长' }
    ],
    customStepValue: '' // 自定义步长值
  },

  onLoad(options) {
    // 从微信运动获取真实步数
    this.getWeixinSportData();
  },

  onShow() {
    // 设置tabBar选中状态
    if (typeof this.getTabBar === 'function' && this.getTabBar()) {
      this.getTabBar().setData({
        selected: 3
      });
    }
  },

  // 获取用户步数（兼容方法）
  getUserSteps() {
    this.getWeixinSportData();
  },

  // 获取微信运动数据
  getWeixinSportData() {
    wx.showLoading({
      title: '获取步数中...'
    });
    
    // 引入统一步数管理器
    const stepManager = require('../../utils/stepManager');
    
    // 使用统一步数管理器获取数据
    stepManager.getUnifiedStepData().then(unifiedData => {
      wx.hideLoading();
      console.log('获取统一步数数据成功:', unifiedData);
      
      // 使用累计步数进行计算
      this.setData({
        userSteps: unifiedData.totalSteps, // 使用累计步数
        todaySteps: unifiedData.todaySteps, // 保存今日步数
        weeklyDistance: unifiedData.weeklyDistance // 一周行走距离
      });
      
      console.log('计算页面步数更新完成 - 累计:', unifiedData.totalSteps, '今日:', unifiedData.todaySteps);
      
    }).catch(error => {
      wx.hideLoading();
      console.error('获取统一步数数据失败:', error);
      
      wx.showToast({
        title: '获取步数失败',
        icon: 'none',
        duration: 2000
      });
    });
  },



  // 显示步长选择弹窗
  showStepSelection() {
    this.setData({
      showStepModal: true
    });
  },

  // 隐藏步长选择弹窗
  hideStepSelection() {
    this.setData({
      showStepModal: false,
      customStepValue: ''
    });
  },

  // 选择步长
  onSelectStep(e) {
    const step = e.currentTarget.dataset.step;
    
    if (step === 'custom') {
      // 显示自定义输入
      this.showCustomStepInput();
    } else {
      this.setData({
        selectedStep: step
      });
    }
  },

  // 显示自定义步长输入
  showCustomStepInput() {
    wx.showModal({
      title: '自定义步长',
      content: '请输入您的步长(米/步)',
      editable: true,
      placeholderText: '0.6',
      success: (res) => {
        if (res.confirm && res.content) {
          // 清理输入内容，去除可能的提示文字
          let inputValue = res.content.trim();
          
          // 检查是否包含提示文字，如果包含则提取数字部分
          if (inputValue.includes('请输入') || inputValue.includes('米/步') || inputValue.includes('之间')) {
            // 尝试从字符串中提取数字
            const numberMatch = inputValue.match(/\d+\.?\d*/);
            if (numberMatch) {
              inputValue = numberMatch[0];
            } else {
              wx.showToast({
                title: '请输入有效数字',
                icon: 'none'
              });
              return;
            }
          }
          
          const customStep = parseFloat(inputValue);
          
          if (isNaN(customStep)) {
            wx.showToast({
              title: '请输入有效数字',
              icon: 'none'
            });
            return;
          }
          
          if (customStep >= 0.3 && customStep <= 1.2) {
            this.setData({
              selectedStep: customStep.toFixed(1),
              customStepValue: customStep.toFixed(1)
            });
            
            wx.showToast({
              title: `已设置为${customStep.toFixed(1)}m/步`,
              icon: 'success'
            });
          } else {
            wx.showToast({
              title: '请输入0.3-1.2之间的数值',
              icon: 'none'
            });
          }
        }
      }
    });
  },

  // 确认步长选择
  confirmStepSelection() {
    this.hideStepSelection();
    
    // 显示选择确认
    wx.showToast({
      title: `已选择${this.data.selectedStep}m/步`,
      icon: 'success'
    });
  },

  // 确定并开始测算
  onConfirmCalculate() {
    const { selectedStep, userSteps, longMarchDistance } = this.data;
    
    if (!selectedStep) {
      wx.showToast({
        title: '请选择步长',
        icon: 'none'
      });
      return;
    }

    // 显示计算中提示
    wx.showLoading({
      title: '测算中...'
    });

    // 计算过程
    setTimeout(() => {
      wx.hideLoading();
      
      // 基于累计步数计算已完成的距离和进度
      const stepLength = parseFloat(selectedStep); // 每步长度(米)
      const totalWalkedDistance = userSteps * stepLength; // 累计行走距离(米)
      const longMarchDistanceM = longMarchDistance * 1000; // 林基路之路距离转换为米 (公里转米)
      
      // 计算完成进度
      const completionRate = ((totalWalkedDistance / longMarchDistanceM) * 100).toFixed(2);
      const remainingDistance = Math.max(0, longMarchDistanceM - totalWalkedDistance); // 剩余距离(米)
      
      // 基于今日步数估算每日进度
      const dailyDistance = this.data.todaySteps * stepLength; // 今日行走距离(米)
      const daysToComplete = dailyDistance > 0 ? Math.ceil(remainingDistance / dailyDistance) : 0; // 按今日进度需要的天数
      const yearsToComplete = dailyDistance > 0 ? (daysToComplete / 365).toFixed(1) : '∞'; // 需要的年数

      const result = {
        stepLength: selectedStep,
        totalSteps: userSteps, // 累计步数
        todaySteps: this.data.todaySteps, // 今日步数
        totalWalkedDistance: (totalWalkedDistance / 1000).toFixed(2), // 累计行走距离(公里)
        dailyDistance: (dailyDistance / 1000).toFixed(2), // 今日行走距离(公里)
        completionRate: completionRate, // 完成百分比
        remainingDistance: (remainingDistance / 1000).toFixed(2), // 剩余距离(公里)
        daysToComplete: daysToComplete,
        yearsToComplete: yearsToComplete,
        longMarchDistance: longMarchDistance,
        totalDistance: (longMarchDistanceM / 1000).toFixed(0) // 林基路之路总距离(公里)
      };

      this.setData({
        calculateResult: result
      });

      // 显示计算结果
      this.showCalculateResult(result);
    }, 1500);
  },

  // 显示计算结果
  showCalculateResult(result) {
    // 设置计算结果数据并显示弹框
    this.setData({
      calculateResult: result,
      showResultModal: true
    });
  },

  // 隐藏结果弹框
  hideResultModal() {
    this.setData({
      showResultModal: false
    });
  },

  // 防止弹框内容点击时关闭弹框
  preventClose() {
    // 空方法，防止事件冒泡
  },

  // 开始测算按钮
  startCalculation() {
    this.hideResultModal();
    this.onConfirmCalculate();
  },

  // 分享结果
  shareResult(result) {
    wx.showActionSheet({
      itemList: ['分享给好友', '保存到相册', '复制文字'],
      success: (res) => {
        switch (res.tapIndex) {
          case 0:
            this.shareToFriend(result);
            break;
          case 1:
            this.saveToAlbum(result);
            break;
          case 2:
            this.copyToClipboard(result);
            break;
        }
      }
    });
  },

  // 分享给好友
  shareToFriend(result) {
    // 这里会调用页面的分享功能
    wx.showToast({
      title: '请使用右上角分享功能',
      icon: 'none'
    });
  },

  // 保存到相册
  saveToAlbum(result) {
    wx.showToast({
      title: '保存功能开发中...',
      icon: 'none'
    });
  },

  // 复制到剪贴板
  copyToClipboard(result) {
    const text = `🎊我在"林基路精神传承"小程序测算了一下：

👣 步长${result.stepLength}m/步，每天${result.userSteps}步
    🏔️ 完成4150公里林基路之路需要${result.yearsNeeded}年！

传承林基路精神，重走革命路！快来测算你的林基路之路吧！`;
    
    wx.setClipboardData({
      data: text,
      success: () => {
        wx.showToast({
          title: '已复制到剪贴板',
          icon: 'success'
        });
      }
    });
  },

  // 重置数据
  resetCalculation() {
    this.setData({
      calculateResult: null,
      showResultModal: false,
      selectedStep: '0.6'
    });
    this.getUserSteps();
  },

  // 页面分享
  onShareAppMessage() {
    const { calculateResult } = this.data;
    if (calculateResult) {
      return {
        title: `我测算了重走林基路之路需要${calculateResult.yearsNeeded}年！传承林基路精神，你也来试试吧！`,
        path: '/pages/calculate/index',
        imageUrl: '../../images/avatar.png'
      };
    } else {
      return {
        title: '测算你的林基路之路 - 看看你走完林基路之路需要多久？',
        path: '/pages/calculate/index',
        imageUrl: '../../images/avatar.png'
      };
    }
  },

  // 页面分享到朋友圈
  onShareTimeline() {
    const { calculateResult } = this.data;
    if (calculateResult) {
      return {
        title: `我在林基路精神传承小程序测算了：需要${calculateResult.yearsNeeded}年走完林基路之路！传承林基路精神，重走革命路！`,
        imageUrl: '../../images/avatar.png'
      };
    } else {
      return {
        title: '林基路精神传承 - 传承林基路精神，测算你的林基路之路',
        imageUrl: '../../images/avatar.png'
      };
    }
  }
}); 